#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<string.h>





// int main()
// {
//     printf("before fork pid:%d\n",getpid());
//     pid_t pid = fork();
//     printf("after fork pid:%d\n",getpid());
// }

// int main()
// {
//     printf("before fork\n");
//     pid_t pid=fork();
//     printf("after fork\n");
//     if(pid>0)
//     {
//         //father
//         printf("I am father pid:%d\n",getpid());
//     }
//     else
//     {
//         //child
//         printf("I am child pid:%d ppid:%d\n",getpid(),getppid());

//     }
//     return 0;
// }

int g_val=100;

// //进程创建
// int main()
// {
    
//     pid_t pid=fork();
//     if(pid>0)//父进程
//     {
//         int num=4;
//         while(num--)
//         {
//             printf("I am father pid: %d  g_val:%d g_val_addr: %p\n",getpid(),g_val,&g_val);
//             sleep(1);
//         }

//     }
//     else if(pid==0)//子进程
//     {
//         int num=3;
//         while (num--)
//         {
//             printf("I am child ppid: %d  pid:%d  g_val: %d g_val_addr: %p\n",getppid(),getpid(),g_val,&g_val);
//             sleep(1);
//             if(num==1)
//             {
//                 g_val=200;
//                 printf("child g_val change to %d\n",g_val);
//             }
//         }
//     }
//     else
//     {
//         perror("fork\n");
//     }

//     return 0;
// }

// int main()
// {
//     printf("u can see me");

//     _exit(1);
// }



int main()
{
    if (fork() > 0) 
    {
        //parent   
        int num = 5;                                                       
        while (num--)
        {
            printf("I am father;g_val:%d g_val_addr:%p\n", g_val, &g_val);
            printf("num:%d",num);
            sleep(1);
        }
    }
    else 
    {
        //child    
        int num = 3;
        while (num--)
        {
            if (num == 1)
            {
                printf("#############################\n");
                g_val = 200;
                printf("child changed g_val to %d\n", g_val);
                printf("#############################\n");
            }
            printf("I am child:g_val:%d ,g_val_addr:%p\n", g_val, &g_val);
        }
    }

    return 0;
}

